import toTree from "@/utils/toTree";
let modules = import.meta.glob("../pages/home/**/*.vue");
// console.log(modules);
//vite中还有个方法eager可以获取默认导入的组件
let syncComponent = import.meta.globEager("../pages/home/**/*.vue");
// console.log(syncComponent);
//目的:将读取到的modules转变成我们的route配置
//一个route配置是这样的{ path:"xxx",component:"xxx" }

//约定式路由
//1.约定所有的页面都必须卸载pages/home这个文件夹下面

//2.所有的页面都需要使用文件夹+index.vue这种编写方式

//声明一个扁平的路由配置数组
let flatRoutes = [];
//遍历modules
for (let path in modules) {
  // console.log(path);
  //获取读取的组件
  let component = modules[path];
  let syncCom = syncComponent[path].default;
  // console.log(syncCom);
  // console.log(component);

  let reg = /^\.{2}\/pages\/home\/(.+)\/index\.vue$/;
  //   console.log(path.match(reg));
  //使用正则匹配路径
  let match = path.match(reg);
  //排除掉匹配到null的这一次,../pages/home/index.vue
  if (match) {
    //创建一个路由对象
    let route = {
      path: match[1],
      component,

      meta: syncCom["meta"] ?? {},
    };
    flatRoutes.push(route);
  }
}

// console.log(flatRoutes);
//二次处理数据,因为扁平转树形,需要有id或者pid,现在给每个对象都添加上id和pid
flatRoutes.forEach((route) => {
  //给每个对象添加上id和pid
  //将路径path按‘/’分割成数组
  let pathArr = route.path.split("/");
  //   console.log(pathArr);
  if (pathArr.length == 1) {
    //说明这些都是父节点,只需要添加id就行
    //数组转字符串
    route.id = pathArr.join("");
    // console.log(route.id);
  } else {
    //不是父节点,需要加上id和pid
    //先拷贝pathArr
    let newPathArr = [...pathArr];
    //将数组转成字符串，中间用“-”连接
    route.id = newPathArr.join("-");
    //去掉数组里索引最后一位，再转为用“-”连接的字符串
    let path = newPathArr.pop();
    route.pid = newPathArr.join("-");
    route.path = path;
    // console.log(route.id, route.pid);
  }
});
// console.log(flatRoutes);
//扁平转树形
let routes = toTree(flatRoutes, "id", "pid");
// console.log(routes);
export default routes;
